package com.itheima.lambda.test4;
/*
有参数 有返回值

1.首先存在一个接口（Calculator）

2. 在该接口中存在一个抽象方法（calc），该方法是有参数也有返回值
3. 在测试类（CalculatorDemo）中存在一个方法（useCalculator）
方法的的参数是Calculator类型的
在方法内部调用了Calculator的calc方法

 */
public class CalculatorDemo {

    public static void main(String[] args) {
        //匿名内部类
        useCalculator(new Calculator() {
            @Override
            public int calc(int a, int b) {
                return a*b;
            }
        });

        useCalculator((a, b) -> a*b);
        //lambda
        useCalculator((int a ,int b)->{return a-b;});
    }


    public static void  useCalculator(Calculator handler){
        int calc = handler.calc(10, 20);
        System.out.println("经过计算 得到了"+calc);

    }

}
interface  Calculator{
  int   calc(int a,int b);
}